package org.example.operator.transform

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

/**
 * rdd的算子，也就是rdd的方法
 *
 *
 */
object Spark19_RDD_Operator_LeftJoin {
  def main(args: Array[String]): Unit = {

    val conf: SparkConf = new SparkConf().setMaster("local[*]").setAppName("RDD")
    val context = new SparkContext(conf)


    val rdd1: RDD[(String, Int)] = context.makeRDD(List(("a",1),("b",2),("c",3)))

    val rdd2: RDD[(String, Int)] = context.makeRDD(List(("b",5),("a",4)))

    val leftRdd: RDD[(String, (Int, Option[Int]))] = rdd1.leftOuterJoin(rdd2)
    // 可以看到两者的返回值的区别，以左边为主，右边可能匹配不到，
    // 右边为主，左边可能匹配不到
    val rightRdd: RDD[(String, (Option[Int], Int))] = rdd1.rightOuterJoin(rdd2)
    context.stop()
  }
}
